home *** CD-ROM | disk | FTP | other *** search
/ Chip 2007 January, February, March & April / Chip-Cover-CD-2007-02.iso / Pakiet multimedia / Muzyka / Edytory sampli (probek dzwieku) / ZynAddSubFX_2.2.0 / Setup_ZynAddSubFX-2.2.0.exe / source code / Params / Controller.h < prev    next >
C/C++ Source or Header  |  2005-03-14  |  5KB  |  180 lines

  1. /*
  2.   ZynAddSubFX - a software synthesizer
  3.  
  4.   Controller.h - (Midi) Controllers implementation
  5.   Copyright (C) 2002-2005 Nasca Octavian Paul
  6.   Author: Nasca Octavian Paul
  7.  
  8.   This program is free software; you can redistribute it and/or modify
  9.   it under the terms of version 2 of the GNU General Public License 
  10.   as published by the Free Software Foundation.
  11.  
  12.   This program is distributed in the hope that it will be useful,
  13.   but WITHOUT ANY WARRANTY; without even the implied warranty of
  14.   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
  15.   GNU General Public License (version 2) for more details.
  16.  
  17.   You should have received a copy of the GNU General Public License (version 2)
  18.   along with this program; if not, write to the Free Software Foundation,
  19.   Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307 USA
  20.  
  21. */
  22.  
  23.  
  24. #ifndef CONTROLLER_H
  25. #define CONTROLLER_H
  26.  
  27. #include "../globals.h"
  28. #include "../Misc/XMLwrapper.h"
  29.  
  30. class Controller{
  31.     public:
  32.     Controller();
  33.     ~Controller();
  34.     void resetall();
  35.  
  36.         void add2XML(XMLwrapper *xml);
  37.     void defaults();
  38.         void getfromXML(XMLwrapper *xml);
  39.  
  40.     //Controllers functions
  41.     void setpitchwheel(int value);
  42.     void setpitchwheelbendrange(unsigned short int value);
  43.     void setexpression(int value);
  44.     void setpanning(int value);
  45.     void setfiltercutoff(int value);
  46.     void setfilterq(int value);
  47.     void setbandwidth(int value);
  48.     void setmodwheel(int value);
  49.     void setfmamp(int value);
  50.     void setvolume(int value);
  51.     void setsustain(int value);
  52.         void setportamento(int value);
  53.     void setresonancecenter(int value);
  54.     void setresonancebw(int value);
  55.  
  56.  
  57.     void setparameternumber(unsigned int type,int value);//used for RPN and NRPN's
  58.     int getnrpn(int *parhi, int *parlo, int *valhi, int *vallo);
  59.  
  60.     int initportamento(REALTYPE oldfreq,REALTYPE newfreq);//returns 1 if the portamento's conditions are true, else return 0
  61.     void updateportamento(); //update portamento values 
  62.  
  63.     // Controllers values 
  64.     struct {//Pitch Wheel
  65.     int data;
  66.     short int bendrange;//bendrange is in cents
  67.     REALTYPE relfreq;//the relative frequency (default is 1.0)
  68.     } pitchwheel;
  69.     
  70.     struct{//Expression
  71.     int data;
  72.     REALTYPE relvolume;
  73.     unsigned char receive;
  74.     } expression;
  75.  
  76.     struct{//Panning
  77.     int data;
  78.     REALTYPE pan;
  79.     unsigned char depth;
  80.     } panning;
  81.         
  82.  
  83.     struct{//Filter cutoff
  84.     int data;
  85.     REALTYPE relfreq;
  86.     unsigned char depth;
  87.     } filtercutoff;
  88.  
  89.     struct{//Filter Q
  90.     int data;
  91.     REALTYPE relq;
  92.     unsigned char depth;
  93.     } filterq;
  94.  
  95.     struct{//Bandwidth
  96.     int data;
  97.     REALTYPE relbw;
  98.     unsigned char depth;
  99.     unsigned char exponential;
  100.     } bandwidth;
  101.  
  102.     struct {//Modulation Wheel
  103.     int data;
  104.     REALTYPE relmod;
  105.     unsigned char depth;
  106.     unsigned char exponential;
  107.     } modwheel;
  108.  
  109.     struct{//FM amplitude
  110.     int data;
  111.     REALTYPE relamp;
  112.     unsigned char receive;
  113.     } fmamp;
  114.  
  115.     struct{//Volume
  116.     int data;
  117.     REALTYPE volume;
  118.     unsigned char receive;
  119.     } volume;
  120.  
  121.     struct{//Sustain
  122.     int data,sustain;
  123.     unsigned char receive;
  124.     } sustain;
  125.  
  126.     struct{//Portamento
  127.     //parameters
  128.     int data;
  129.     unsigned char portamento;
  130.     
  131.     //pitchthresh is the threshold of enabling protamento
  132.     //pitchthreshtype -> enable the portamento only below(0)/above(1) the threshold
  133.     unsigned char receive,time,pitchthresh,pitchthreshtype;
  134.  
  135.     //'up portanemto' means when the frequency is rising (eg: the portamento is from 200Hz to 300 Hz)
  136.     //'down portanemto' means when the frequency is lowering (eg: the portamento is from 300Hz to 200 Hz)
  137.     unsigned char updowntimestretch;//this value represent how the portamento time is reduced
  138.     //0 - for down portamento, 1..63 - the up portamento's time is smaller than the down portamento
  139.     //64 - the portamento time is always the same
  140.     //64-126 - the down portamento's time is smaller than the up portamento
  141.     //127 - for upper portamento
  142.  
  143.     REALTYPE freqrap;//this value is used to compute the actual portamento
  144.     int noteusing;//this is used by the Part:: for knowing which note uses the portamento
  145.     int used;//if a the portamento is used by a note
  146.     //internal data
  147.     REALTYPE x,dx;//x is from 0.0 (start portamento) to 1.0 (finished portamento), dx is x increment
  148.     REALTYPE origfreqrap;// this is used for computing oldfreq value from x
  149.     } portamento;
  150.     
  151.     struct{//Resonance Center Frequency
  152.     int data;
  153.     REALTYPE relcenter;
  154.     unsigned char depth;
  155.     } resonancecenter;
  156.  
  157.     struct{//Resonance Bandwidth
  158.     int data;
  159.     REALTYPE relbw;
  160.     unsigned char depth;
  161.     } resonancebandwidth;
  162.     
  163.  
  164.     /* RPN and NPRPN */
  165.     struct{//nrpn
  166.     int parhi,parlo;
  167.     int valhi,vallo;
  168.     unsigned char receive;//this is saved to disk by Master
  169.     } NRPN;
  170.     
  171.     private:
  172. };
  173.  
  174.  
  175.  
  176.  
  177.  
  178. #endif
  179.  
  180.